
//app.js
const fp = require('lodash/fp')
const {Maybe, Container} = require('./support')


// 01 使用fp.add(x,y) 和fp.map(f,x)创建一个能让functor里的值增加的函数ex1
let maybe = Maybe.of([5,6,1])
let ex1 = (x) => {
     return maybe.map(fp.map(f => {
         fp.add(f,x)
     }))
}
console.log(ex1(1))

//实现一个函数ex2 ,能使用fp.first获取列表的第一个元素
let xs = Container.of(['do', 'ray','me' , 'fa', 'so', 'la', 'ti', 'do'])
let ex2 = () =>{
    return xs.map(fp.first)
}
console.log(ex2())

//实现一个函数ex3,使用safaProp和fp.first找到user的名字的首字母
let safaProp = fp.curry(function(x, o){
    return Maybe.of(o[x]) 
 })
 let user = {id:2,name:'Albert'}
 let ex3 = () => {
     //实现的函数
     let nameUs  = safaProp('name',user)
     let names = nameUs.map(fp.first)
     console.log(names)
     return names
 }
 console.log(ex3())


 // 使用Maybe重写ex4，不要有if语句
//  let ex4 = function(n){
//     if(n){
//         return parseInt(n)
//     }
// }
let ex4 = n =>{
    return Maybe.of(n).map(parseInt)
}
  console.log(ex4(2))
  
